<!--
<template>
  <div :class="[prefixCls]">
    <ul>
      <slot></slot>
      <template v-for="item in filterEmpty($slots.default).slice(0, 3)"></template>

      <template v-if="maxLength > 0 && filterEmpty($slots.default).length > maxLength">
        <avatar-item :size="size">
          <avatar :size="size !== 'mini' && size || 20" :style="excessItemsStyle">{{ `+${maxLength}` }}</avatar>
        </avatar-item>
      </template>
    </ul>
  </div>
</template>
-->

<script>
import Avatar from 'ant-design-vue/es/avatar';
import AvatarItem from './Item';
import { filterEmpty } from '@/components/_util/util';

export default {
  AvatarItem,
  name: 'AvatarList',
  components: {
    Avatar,
    AvatarItem,
  },
  props: {
    prefixCls: {
      type: String,
      default: 'ant-pro-avatar-list',
    },
    /**
       * 头像大小 类型: large、small 、mini, default
       * 默认值: default
       */
    size: {
      type: [String, Number],
      default: 'default',
    },
    /**
       * 要显示的最大项目
       */
    maxLength: {
      type: Number,
      default: 0,
    },
    /**
       * 多余的项目风格
       */
    excessItemsStyle: {
      type: Object,
      default: () => {
        return {
          color: '#f56a00',
          backgroundColor: '#fde3cf',
        };
      },
    },
  },
  data() {
    return {};
  },
  methods: {
    getItems(items) {
      const classString = {
        [`${this.prefixCls}-item`]: true,
        [`${this.size}`]: true,
      };

      if (this.maxLength > 0) {
        items = items.slice(0, this.maxLength);
        items.push((<Avatar size={ this.size } style={ this.excessItemsStyle }>{`+${this.maxLength}`}</Avatar>));
      }
      const itemList = items.map((item) => (
        <li class={ classString }>{ item }</li>
      ));
      return itemList;
    },
  },
  render() {
    const { prefixCls, size } = this.$props;
    const classString = {
      [`${prefixCls}`]: true,
      [`${size}`]: true,
    };
    const items = filterEmpty(this.$slots.default);
    const itemsDom = items && items.length ? <ul class={`${prefixCls}-items`}>{ this.getItems(items) }</ul> : null;

    return (
      <div class={ classString }>
        { itemsDom }
      </div>
    );
  },
};
</script>
